home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / extra_2 / pre_view.zip / WSELPRN.PAS < prev    next >
Pascal/Delphi Source File  |  1995-10-28  |  3KB  |  140 lines

  1. unit wSelprn;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, ExtCtrls, Misc;
  8.  
  9. const
  10.  
  11.   DirectNote='Direct To My Printer';
  12.  
  13. type
  14.   Tnewprinter = class(TForm)
  15.     Button1: TButton;
  16.     Label1: TLabel;
  17.     Label2: TLabel;
  18.     Label3: TLabel;
  19.     CheckBox1: TCheckBox;
  20.     prnlist: TComboBox;
  21.     qlist: TComboBox;
  22.     Label4: TLabel;
  23.     procedure Button1Click(Sender: TObject);
  24.     procedure FormCreate(Sender: TObject);
  25.     procedure prnlistClick(Sender: TObject);
  26.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  27.     procedure qlistClick(Sender: TObject);
  28.   private
  29.     { Private declarations }
  30.         procedure GetAvailQueues;
  31.         procedure SetupLists;
  32.   public
  33.     { Public declarations }
  34.   end;
  35.  
  36. var
  37.   newprinter: Tnewprinter;
  38.  
  39. implementation
  40.  
  41. {$R *.DFM}
  42.  
  43. uses wPreview;
  44.  
  45. procedure Tnewprinter.Button1Click(Sender: TObject);
  46. begin
  47.   Close;
  48. end;
  49.  
  50. procedure Tnewprinter.GetAvailQueues;
  51. var ii,jj:integer;
  52. begin
  53.   qlist.clear;
  54.   jj:=-1;
  55.   with lp do begin
  56.     if (CurDest>0) and (QueueCnt>0) and (lptprinters[CurDest].PrType>0) then begin
  57.       if (pin('LPT',uppercase(LptPrinters[CurDest].PrPort))) and
  58.          (procint(LptPrinters[CurDest].PrPort)=1) then
  59.         qlist.items.add(' '+DirectNote);
  60.       for ii:=1 to QueueCnt do begin
  61.         if LptPrinters[CurDest].Prtype=QueueType[ii] then begin
  62.             qlist.items.add(' '+padr(QueueTitle[ii],30)+'  '+QueueName[ii]);
  63.         end;
  64.       end;
  65.       for ii:=0 to qlist.items.count-1 do begin
  66.         if not empty(LptPrinters[CurDest].Queue) then begin
  67.           if pin(LptPrinters[CurDest].Queue,qlist.items[ii]) then begin
  68.             jj:=ii;
  69.           end;
  70.         end;
  71.       end;
  72.     end;
  73.   end;
  74.   if qlist.items.count>0 then begin
  75.     if jj>=0 then qlist.itemindex:=jj
  76.     else qlist.itemindex:=0;
  77.   end;
  78. end;
  79.  
  80. procedure Tnewprinter.SetupLists;
  81. var ii,jj,kk:integer;
  82.     tt,tt2:string;
  83. begin
  84.   kk:=lp.curdest-1;
  85.   prnlist.clear;
  86.   qlist.clear;
  87.   if lp.PrnCnt>0 then begin
  88.     for ii:=1 to lp.PrnCnt do begin
  89.       with lp.LptPrinters[ii] do begin
  90.         tt2:=' '+padr(Prname,22)+' '+padr(PrPort,5);
  91.         jj:=lp.GetQueueNum(queue);
  92.         if jj>0 then tt2:=tt2+'  '+lp.QueueTitle[jj]
  93.         else tt2:=tt2+'  '+DirectNote;
  94.         prnlist.items.add(tt2);
  95.       end;
  96.     end;
  97.   end;
  98.   if kk>=0 then prnlist.itemindex:=kk;
  99.   GetAvailQueues;
  100. end;
  101.  
  102. procedure Tnewprinter.FormCreate(Sender: TObject);
  103. begin
  104.   top:=0;
  105.   left:=(screen.width-width) div 2;
  106.   width:=509;
  107.   height:=201;
  108.   SetupLists;
  109.   checkbox1.checked:=lp.WantsPreview;
  110.   show;
  111. end;
  112.  
  113. procedure Tnewprinter.prnlistClick(Sender: TObject);
  114. var ii,jj:integer;
  115. begin
  116.   lp.CurDest:=prnlist.itemindex+1;
  117.   with lp.LptPrinters[lp.CurDest] do
  118.       lp.Capture(procint(PrPort),Queue);
  119.   SetupLists;
  120. end;
  121.  
  122. procedure Tnewprinter.FormClose(Sender: TObject; var Action: TCloseAction);
  123. begin
  124.   lp.WantsPreview:=checkbox1.checked;
  125.   action:=caFree;
  126. end;
  127.  
  128. procedure Tnewprinter.qlistClick(Sender: TObject);
  129. begin
  130.   with lp.LptPrinters[lp.CurDest] do begin
  131.     Queue:=iifs(pin('Direct',qlist.items[qlist.itemindex]),'',
  132.         ltrim(trim(copy(qlist.items[qlist.itemindex],31,20))));
  133.       { change queue capturing, if Queue empty, means end capture }
  134.       lp.Capture(procint(PrPort),Queue);
  135.   end;
  136.   SetupLists;
  137. end;
  138.  
  139. end.
  140.